package com.my12306.user.service.auth;

import com.baomidou.mybatisplus.extension.service.IService;
import com.my12306.common.util.PageUtils;
import com.my12306.user.model.po.auth.PermissionEntity;
import com.my12306.user.model.vo.PermissionVo;

import java.util.List;
import java.util.Map;


public interface PermissionService extends IService<PermissionEntity> {

    PageUtils queryPage(Map<String, Object> params);


    /**
     * 根据用户id查出所有权限的树形菜单
     *
     * @param user_id
     * @return
     */
    List<PermissionEntity> getUserPermListByUser_id(long user_id);

    /**
     * 根据用户id 查出所有权限资源名
     *
     * @param user_id
     * @return
     */
    List<String> getUserPermissionByUser_id(long user_id);

    /**
     * 根据用户id查询所有的用户权限id
     *
     * @param user_id
     * @return
     */
    List<Long> getUserPermIdByUser_id(long user_id);

    /**
     * @return
     */
    List<PermissionEntity> getUserAllPermByUser_id(long user_id);


    /**
     * 根据id 修改权限
     *
     * @param entity
     * @return
     */
    Boolean updatePermByid(PermissionEntity entity);

    /**
     * 查询所有非按钮级的权限
     *
     * @return
     */
    List<PermissionVo> getPermsNotButtonList();

    /**
     * 根据权限id删除
     * 1.删除本身
     * 2.删除旗下的子权限
     * 3.删除本身及其子权限与角色相关的关联
     *
     * @param permId
     */
    void deletePermById(Long permId);

    /**
     * 根据父id查询所有相关权限
     *
     * @param parentId
     * @return
     */
    List<Long> queryPermIdByParentId(Long parentId);

    /**
     * 添加权限
     *
     * @param permissionEntity
     */
    void savePermission(PermissionVo permissionEntity);
}

